home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1996 September
/
CHIP 1996 szeptember (CD07).zip
/
CHIP_CD07.ISO
/
sac
/
pack
/
rar200se.exe
/
rar
/
TECHNOTE.DOC
< prev
next >
Wrap
Text File
|
1996-05-24
|
10KB
|
360 lines
██████╗ █████╗ ██████╗
██╔══██╗ ██╔══██╗ ██╔══██╗ RAR verzia 2.00 - Technické informácie
██████╔╝ ███████║ ██████╔╝ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
██╔══██╗ ██╔══██║ ██╔══██╗
██║ ██║ ██║ ██║ ██║ ██║
╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
┌─────────────────────────────────────────────────────────────────────┐
│TU POPISOVAN¥ FORMÅT ARCHïVU JE PLATN¥ LEN PRE VERZIE NOV¢IE AKO 1.50│
└─────────────────────────────────────────────────────────────────────┘
╔════════════════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Súborovÿ formát archívu RARu ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚════════════════════════════════════════════════════════════════════════╝
Archívny súbor sa skladá z blokov premenlivej dìæky. Poradie tÿchto
blokov môæe byƒ rôzne, ale prvÿ blok musí byƒ znaçkovÿ blok nasledovanÿ
blokom hlaviçky archívu.
Kaædÿ blok zaçína nasledujúcimi poîami:
HEAD_CRC 2 bajty CRC celého bloku alebo çasti bloku
HEAD_TYPE 1 bajt Typ bloku
HEAD_FLAGS 2 bajty Príznaky bloku
HEAD_SIZE 2 bajty Veîkosƒ bloku
ADD_SIZE 4 bajty Voliteîné pole - veîkosƒ pridaného bloku
Pole ADD_SIZE je prítomné len ak (HEAD_FLAGS & 0x8000) != 0
Celková veîkosƒ bloku je HEAD_SIZE ak (HEAD_FLAGS & 0x8000) == 0
a HEAD_SIZE+ADD_SIZE ak je pole ADD_SIZE prítomné - keâ
(HEAD_FLAGS & 0x8000) != 0.
V kaædom bloku nasledujúce bity v HEAD_FLAGS majú spoloçnÿ vÿznam:
0x4000 - ak nastavenÿ, star¿ie verzie RARu ignorujú tento blok
a odstránia ho pri aktualizácii archívu.
ak nulovÿ, blok je kopírovanÿ do nového archívneho súboru
pri aktualizácii archívu;
0x8000 - ak nastavenÿ, pole ADD_SIZE je prítomné a celková veîkosƒ bloku
je HEAD_SIZE+ADD_SIZE.
Deklarované typy blokov:
HEAD_TYPE=0x72 znaçkovÿ blok
HEAD_TYPE=0x73 hlaviçka archívu
HEAD_TYPE=0x74 hlaviçka súboru
HEAD_TYPE=0x75 hlaviçka komentára
HEAD_TYPE=0x76 extra informácia
HEAD_TYPE=0x77 podblok
HEAD_TYPE=0x78 záchrannÿ záznam
Komentárovÿ blok je momentálne pouæívanÿ len v inÿch blokoch a nevyskytuje
sa samostatne.
Archív sa spracováva nasledujúcim spôsobom:
1. Preçíta a skontroluje sa znaçkovÿ blok
2. Preçíta sa hlaviçka archívu
3. Preçítajú alebo vynechajú sa bajty HEAD_SIZE-veîkosƒ(MAIN_HEAD)
4. Ak nastal koniec archívu, spracuje sa ukonçenie archívu, ináç
sa naçíta 7 bajtov do polí HEAD_CRC, HEAD_TYPE, HEAD_FLAGS, HEAD_SIZE.
5. Testuje sa HEAD_TYPE.
V prípade, æe je potrebné çítaƒ blok:
ak HEAD_TYPE==0x74
preçíta sa hlaviçka súboru ( prvÿch 7 bajtov je uæ preçítanÿch )
preçíta alebo vynechá sa HEAD_SIZE-veîkosƒ(FILE_HEAD) bajtov
preçíta alebo vynechá sa FILE_SIZE bajtov
ináç
preçíta sa zodpovedajúci blok HEAD_TYPE:
preçíta sa HEAD_SIZE-7 bajtov
ak (HEAD_FLAGS & 0x8000)
preçíta sa ADD_SIZE bajtov
V prípade, æe je potrebné vynechaƒ blok:
vynechá sa HEAD_SIZE-7 bajtov
ak (HEAD_FLAGS & 0x8000)
vynechá sa ADD_SIZE bajtov
6. pokraçuje sa bodom 4.
╔════════════════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Formáty blokov ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚════════════════════════════════════════════════════════════════════════╝
Znaçkovÿ blok ( MARK_HEAD )
HEAD_CRC Vædy 0x6152
2 bajty
HEAD_TYPE Typ hlaviçky: 0x72
1 bajt
HEAD_FLAGS Vædy 0x1a21
2 bajty
HEAD_SIZE Veîkosƒ bloku = 0x0007
2 bajty
Znaçkovÿ blok je momentálne reprezentovanÿ pevnou sekvenciou
bajtov: 0x52 0x61 0x72 0x21 0x1a 0x07 0x00
Hlaviçka archívu ( MAIN_HEAD )
HEAD_CRC CRC polí HEAD_TYPE aæ RESERVED2
2 bajty
HEAD_TYPE Typ hlaviçky: 0x73
1 bajt
HEAD_FLAGS Bitové príznaky:
2 bajty
0x01 - Atribút zväzku (archívny zväzok)
0x02 - Prítomnosƒ archívneho komentára
0x04 - Atribút uzamknutia archívu
0x08 - Solid atribút (solid archív)
0x10 - Nepouæité
0x20 - Prítomnosƒ AV informácie
zvy¿né bity v HEAD_FLAGS sú rezervované pre
interné pouæitie
HEAD_SIZE Celková veîkosƒ hlaviçky archívu vçetne archívnych komentárov
2 bajty
RESERVED1 Rezervované
2 bajty
RESERVED2 Rezervované
4 bajty
Komentárovÿ blok je prítomnÿ ak (HEAD_FLAGS & 0x02) != 0
Hlaviçka súboru (Súboru v archíve)
HEAD_CRC CRC polí HEAD_TYPE aæ FILEATTR
2 bajty a názvu súboru
HEAD_TYPE Typ hlaviçky: 0x74
1 bajt
HEAD_FLAGS Bitové príznaky:
2 bajty
0x01 - súbor pokraçuje z predchádzajúceho zväzku
0x02 - súbor pokraçuje na nasledujúcom zväzku
0x04 - súbor je zakryptovanÿ pomocou hesla
0x08 - prítomnÿ komentár súboru
0x10 - je pouæitá informácia z predchádzajúcich súborov
(solid príznak) (pre RAR 2.0 a nov¿ie)
bity 7 6 5 (pre RAR 2.0 a nov¿ie)
0 0 0 - veîkosƒ slovníka 64 kB
0 0 1 - veîkosƒ slovníka 128 kB
0 1 0 - veîkosƒ slovníka 256 kB
0 1 1 - veîkosƒ slovníka 512 kB
1 0 0 - veîkosƒ slovníka 1024 kB
1 0 1 - rezervované
1 1 0 - rezervované
1 1 1 - súbor je adresár
(HEAD_FLAGS & 0x8000) == 1, pretoæe úplná
veîkosƒ bloku je HEAD_SIZE + PACK_SIZE
HEAD_SIZE Celková veîkosƒ hlaviçku súboru vçetne názvu súboru
2 bajty a komentárov
PACK_SIZE Veîkosƒ súboru po kompresii
4 bajty
UNP_SIZE Veîkosƒ súboru po rozbalení
4 bajty
HOST_OS Operaçnÿ systém pouæitÿ pre archiváciu
1 bajt 0 - MS DOS
1 - OS/2
2 - Win32
3 - Unix
FILE_CRC CRC súboru
4 bajty
FTIME Dátum a ças v ¿tandardnom MS DOS formáte
4 bajty
UNP_VER Verzia RARu potrebná na extrakciu súboru
1 bajt
METHOD Metóda kompresie
1 bajt
NAME_SIZE Dìæka názvu súboru
2 bajty
ATTR Atribúty súboru
4 bajty
FILE_NAME Názov súboru - reƒazec o dìæke NAME_SIZE bajtov
Komentárovÿ blok je prítomnÿ ak (HEAD_FLAGS & 0x08) != 0
Komentárovÿ blok
HEAD_CRC CRC polí HEAD_TYPE aæ COMM_CRC
2 bajty
HEAD_TYPE Typ hlaviçky: 0x75
1 bajt
HEAD_FLAGS Bitové príznaky
2 bajty
HEAD_SIZE Veîkosƒ hlaviçky komentára + veîkosƒ komentára
2 bajty
UNP_SIZE Veîkosƒ komentáru po rozbalení
2 bajty
UNP_VER Verzia RARu potrebná na extrakciu komentára
1 bajt
METHOD Metóda kompresie
1 bajt
COMM_CRC CRC komentára
2 bajty
COMMENT Text komentára
Blok extra informácie
HEAD_CRC CRC bloku
2 bajty
HEAD_TYPE Typ hlaviçky: 0x76
1 bajt
HEAD_FLAGS Bitové príznaky
2 bajty
HEAD_SIZE Celková veîkosƒ bloku
2 bajty
INFO Iné dáta
Podblok
Po objekte v archíve (blok alebo hlaviçka) môæe nasledovaƒ podblok.
Podblok je závislÿ na hlavnom objekte. Podblok môæe byƒ vymazanÿ
alebo prenesenÿ do novej verzie archívu, ak je archív aktualizovanÿ.
Podblok obsahuje nasledujúce polia:
HEAD_CRC CRC bloku
2 bajty
HEAD_TYPE Typ hlaviçky: 0x77
1 bajt
HEAD_FLAGS Bitové príznaky
2 bajty
(HEAD_FLAGS & 0x8000) == 1, pretoæe úplná
veîkosƒ bloku je HEAD_SIZE + DATA_SIZE
HEAD_SIZE Celková veîkosƒ bloku
2 bajty
DATA_SIZE Celková veîkosƒ dát
4 bajty
SUB_TYPE Typ podbloku
2 bajty
RESERVED Musí byƒ 0
1 bajt
Iné polia Iné polia v závislosti od typu podbloku
Podblok roz¿írenÿch atribútov OS/2
HEAD_CRC CRC bloku
2 bajty
HEAD_TYPE Typ hlaviçky: 0x77
1 bajt
HEAD_FLAGS Bitové príznaky
2 bajty
(HEAD_FLAGS & 0x8000) == 1, pretoæe úplnáì
veîkosƒ bloku je HEAD_SIZE + DATA_SIZE
HEAD_SIZE Celková veîkosƒ bloku
2 bajty
DATA_SIZE Celková veîkosƒ dát (veîkosƒ skomprimovanÿch roz¿írenÿch
4 bajty atribútov)
SUB_TYPE 0x100
2 bajty
RESERVED Musí byƒ 0
1 bajt
UNP_SIZE veîkosƒ roz¿írenÿch atribútov po rozbalení
4 bajty
UNP_VER Verzia RARu potrebná na extrakciu ro¿írenÿch atribútov
1 bajt
METHOD Metóda kompresie
1 bajt
EA_CRC CRC roz¿írenÿch atribútov
4 bajty
╔════════════════════════════════════════════════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Applikaçné poznámky ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║
╚════════════════════════════════════════════════════════════════════════╝
1. Pri spracovaní SFX archívu musíte vynechaƒ SFX modul hîadaním
znaçkového bloku v archíve. V samotnom SFX module sa nenachádza sekvencia
znaçkového bloku (0x52 0x61 0x72 0x21 0x1a 0x07 0x00).
2. CRC je kalkulovanÿ pouæitím ¿tandardardného polynómu 0xEDB88320.
V prípade, æe veîkosƒ CRC je men¿ia ako 4 bajty, sú pouæité len dolné bajty.
3. Zakódovanie metódy kompresie:
0x30 - ukladanie
0x31 - najrÿchlej¿ia kompresia
0x32 - rÿchla kompresia
0x33 - normálna kompresia
0x34 - dobrá kompresia
0x35 - najlep¿ia kompresia
4. Verzia RARu potrebná na extrakciu je zakódovaná ako 10 * hlavné çíslo
verzie + minoritné çíslo verzie.